Die Skriptsammlung ewMenüs von Udo Egner-Walter ist eine Skriptsammlung für den Screenreader JAWS der Firma Freedom Scientific. Die Sammlung beinhaltet Skripts zum Erstellen und Verwenden virtueller Menüs. Skriptentwickler können mit dieser Skriptsammlung eigene virtuelle Menüs erstellen und diese anderen Anwendern zur Verfügung stellen. Anwender erhalten mit dieser Skriptsammlung bereits erstellte Menüs, die weiter unten ausführlich beschrieben werden.
Dies ist keine offizielle Skriptsammlung der Firma Freedom Scientific, den Entwicklern von JAWS. Alle enthaltenen Scripts wurden ausgiebig getestet. Dennoch kann es vorkommen, dass Skripts nicht ordnungsgemäß funktionieren. Ich weise Sie deshalb ausdrücklich darauf hin, dass Sie diese Skriptsammlung auf eigene Gefahr benutzen und der Autor keine Haftung für die Skripts dieser Sammlung übernimmt, ebenso keine Haftung für Schäden durch die Verwendung der Skripts oder falsch verstandener Anwendung der Skriptsammlung.
Weitere Infos zur Benutzung dieser Skriptsammlung entnehmen Sie bitte dem Abschnitt Copyright.
Udo Egner-Walter, März 2020
Diese Skriptsammlung von Udo Egner-Walter ist lizensiert unter der Creative Commons Namensnennung-Nicht kommerziell 4.0 International
Dies ist eine allgemeinverständliche Zusammenfassung der Lizenz (die diese nicht ersetzt).
Sie dürfen:
Der Lizenzgeber kann diese Freiheiten nicht widerrufen solange Sie sich an die Lizenzbedingungen halten.
Unter folgenden Bedingungen:
Sie müssen sich nicht an diese Lizenz halten hinsichtlich solcher Teile des Materials, die gemeinfrei sind, oder soweit Ihre Nutzungshandlungen durch Ausnahmen und Schranken des Urheberrechts gedeckt sind.
Es werden keine Garantien gegeben und auch keine Gewähr geleistet. Die Lizenz verschafft Ihnen möglicherweise nicht alle Erlaubnisse, die Sie für die jeweilige Nutzung brauchen. Es können beispielsweise andere Rechte wie Persönlichkeits- und Datenschutzrechte zu beachten sein, die Ihre Nutzung des Materials entsprechend beschränken.
Quelle: https://creativecommons.org/licenses/by-nc/4.0/deed.de
Persönlich bedanken möchte ich mich vor allen bei folgenden Testern (alphabetisch):
Vielen Dank für eure Rückmeldungen und Vorschläge.
Weiter gilt mein Dank all den Testern, die ich vergessen habe zu erwähnen oder die hier nicht erwähnt werden wollten. Auch euch vielen Dank fürs Testen.
Ganz herzlich bedanken möchte ich mich auch bei René Ludwig, der es ermöglicht hat, dass die Skriptsammlung auf der deutschen JAWS-Seite zum Download angeboten werden kann.
Vielen Dank euch allen!
Folgendes wurde in dieser Version geändert:
Erste Veröffentlichung. Enthaltene Skripts:
Diese Skriptsammlung umfasst folgende Dateien:
Der erste Schritt besteht darin, die oben genannten Dateien in das Anwenderskriptverzeichnis zu kopieren.
Gehen Sie hierzu wie folgt vor:
Hinweis
Falls Sie auf die eben beschriebene Weise nicht in Ihr Anwenderskriptverzeichnis gelangen können, so können Sie alternativ so vorgehen:
Sie befinden sich nun in Ihrem Anwenderskriptverzeichnis, in welches Sie die o. g. Dateien kopieren können.
Achtung!
Überschreiben Sie vorhandene Dateien nur, wenn Sie ältere Skripts durch eine neuere Version ersetzen möchten.Bei der Datei MyExtensions.jss handelt es sich um eine Anwenderskriptdatei, die von den JAWS-Entwicklern für eigene Skripts zur Verfügung gestellt wird. Sollte in Ihrem Anwenderskriptverzeichnis bereits eine Datei namens MyExtensions.jss existieren, so öffnen Sie diese mit dem Windows-Editor und fügen Sie folgenden Eintrag am Ende ein:
use "ewMenus.jsb"
Sollte die Datei MyExtensions.jss noch nicht existieren, so benennen Sie die Datei:
ewMenus (myExtensions).jss
um in die Datei:
MyExtensions.jss
Damit JAWS die Skripts nutzen kann, muss der Code vorher kompiliert werden, das heißt in ein für JAWS verwendetes Format übersetzt werden. Da diese Übersetzung von JAWS-Version zu JAWS-Version unterschiedlich ist, muss man dies für die jeweilige JAWS-Version von Hand erledigen. Die einzelnen Schritte sind wie folgt:
Vorbemerkung
Im Folgenden müssen Dateien auf Ihrer Festplatte umbenannt werden. Dies funktioniert jedoch nur, wenn im Windows Explorer alle Dateiendungen eingeblendet sind. Sie können die Dateiendungen im Explorer ein-/ausblenden, indem Sie folgende Tasten drücken: Alt-Taste, dann A, dann H, dann F.Prüfen Sie, ob die Datei Default.jkm bereits existiert. Falls die Datei nicht existiert, so benennen Sie die Datei:
ewMenus (Default).jkm
um in die Datei:
Default.jkm
Falls die Datei Default.jkm bereits existiert, so gehen Sie bitte wie folgt vor:
Falls sie die Anwendung Word verwenden und die klassischen Menüs verwenden möchten, so prüfen Sie, ob die Datei word.jkm bereits existiert. Falls die Datei nicht existiert, so benennen Sie die Datei:
ewMenus (Word).jkm
um in die Datei:
Word.jkm
Achtung!
Wenn Sie eine Word-Version vor der Version 2016 verwenden, so müssen Sie statt Word.jkm den Dateinamen WordClassic.jkm verwenden.Falls die Datei Word.jkm bereits existiert, so gehen Sie bitte wie folgt vor:
Falls sie die Anwendung Google Chrome verwenden und die Menüs dort verwenden möchten, so prüfen Sie, ob die Datei Chrome.jkm bereits existiert. Falls die Datei nicht existiert, so benennen Sie die Datei:
ewMenus (Chrome).jkm
um in die Datei:
Chrome.jkm
Falls die Datei Chrome.jkm bereits existiert, so gehen Sie bitte wie folgt vor:
Falls sie die Anwendung Microsoft Edge auf Chromium-Basis verwenden und die Menüs dort verwenden möchten, so prüfen Sie, ob die Datei msedge.jkm bereits existiert. Falls die Datei nicht existiert, so benennen Sie die Datei:
ewMenus (Edge).jkm
um in die Datei:
msedge.jkm
Falls die Datei msedge.jkm bereits existiert, so gehen Sie bitte wie folgt vor:
Nun können Sie die Skripts verwenden.
Die Skriptsammlung enthält sowohl Skripts und Funktionen, um eigene Menüs zu erstellen, als auch bereits vorgefertigte Menüs. Zuerst folgen ein paar allgemeine Hinweise zum Verwenden der Menüs, dann eine Auflistung der vorgefertigten Menüs und zum Schluss eine Anleitung, um eigene Menüs zu erstellen.
Um ein Menü aufzurufen, verwenden Sie die Tastenfolge Umschalt+Leertaste, gefolgt von M. Nun können Sie eine der folgenden Tasten verwenden, um ein bestimmtes Menü zu öffnen:
Die Menüs sind nun so lange geöffnet, bis Sie die Schaltfläche ESC zum Schließen der Menüs drücken. Beim Start und Beenden der virtuellen Menüs ertönt ein Ton, damit Sie erkennen können, dass die Menüs am Bildschirm aktiv sind.
Wenn die Menüs geöffnet sind, so können Sie die Pfeiltasten verwenden, um sich durch die Menüs zu bewegen. Folgende Tasten sind hierbei verfügbar:
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann C
Beschreibung: Die Steuerelemente einer Anwendung werden in einem Menü aufgelistet.
Das Skript sucht nach allen Steuerelementen der Anwendung. In der Menüleiste werden die Steuerelemente dann nach Gruppen geordnet. So werden in einem Menü - falls vorhanden - alle Schaltflächen mit ihrem Namen aufgelistet, in einem anderen Menü alle Registerkarten usw. Wenn Sie ein Menü mit der Pfeil-ab-Taste aufklappen, so stehen dort die Steuerelemente dieser Gruppe mit ihrem Namen als Menüeinträge. Wenn Sie ein Menüeintrag mit dem gesuchten Namen ausgewählt haben, können Sie die Eingabetaste drücken, um das Steuerelement in Ihrer Anwendung zu fokussieren.
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann E
Beschreibung: Das Menü listet viele der in Windows 10 bekannten Systemsteuerung-Einstellungsdialoge auf und führt diese aus. Das Menü enthält 16 Menüs mit insgesamt 120 Menüeinträgen. Des Weiteren 2 Menüeinträge mit 16 Einträgen zum Öffnen häufig verwendeter Windows-Ordner wie zum Beispiel Autostart, Startmenü und so weiter
Das Menü enthält die Einträge:
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann F
Beschreibung: In dem Menü wird für jeden gefundenen Ordner im Favoriten-Menü ein eigenes Menü erzeugt. Als Menü-Einträge werden die gefundenen Internet-Verknüpfungen eingefügt.
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann J
Beschreibung: Es werden einige JAWS-Funktionen in Menü-Form dargestellt.Das Menü enthält 7 Menüs mit insgesamt 40 Einträgen.
Das Menü enthält die Einträge:
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann O
Beschreibung: In diesem Menü werden Emojis in diversen Kategorien angezeigt. Wenn Sie ein Emoji mit der Eingabetaste auswählen, wird dieses an der Cursorposition Ihres Textes eingefügt. Das Menü enthält 7 Menüs mit insgesamt 83 Untermenüs:
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann S
Beschreibung: In diesem Menü werden Windows-Symbole nach Kategorien angezeigt. Wenn Sie auf einem Menü-Eintrag ein Symbol mit der Eingabetaste auswählen, wird dieses an der Cursorposition Ihres Textes eingefügt. Das Menü enthält 13 Menüs mit 374 Einträgen.
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann T
Beschreibung: In diesem Menü werden Menüelemente im Zusammenhang mit der Taskleiste erzeugt.
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann W
Beschreibung: Drücken Sie diese Tastenkombination in Word, um die klassischen Word-Menüs zu verwenden.
Standardtaste: Umschalt+Leertaste, gefolgt von M, dann D
Beschreibung: Drücken Sie diese Tastenkombination in Chrome bzw. Edge auf Chromium-Basis, um ein Menü mit Befehlen zu erhalten.
Viele Menüpunkte sind sowohl in Chrome als auch im Edge identisch und unterscheiden sich nur in einigen wenigen Punkten. Das Menü enthält:
Wenn Sie möchten, können Sie sich mit ewMenüs Ihre eigene kleine Menüsammlung erstellen. So können Sie zum Beispiel Menüs erstellen,
Ihrer Phantasie sind hier keine Grenzen gesetzt. mit all diesen Funktionen können Sie:
Achtung!
Sie können zwar Menü-Skripts in die ewMenus-Skriptdatei einfügen, jedoch werden Ihre eigenen Skripts nach einem Skriptupdate ggf. dann überschrieben. Deshalb beschreibe ich hier nur den Weg über externe, eigene Skriptdateien.Folgende Schritte sind nötig, um eigene Menü-Skripts zu erstellen:
Hier ein komplettes Beispiel einer Skriptdatei, die Menüs nutzen möchte:
; Include-Anweisungen Include "HjGlobal.jsh" Include "hjconst.jsh" include "MSAAConst.jsh" include "UIA.jsh" ; Ihre Use-Dateien, z. B. use "Default.jsb" ; ... weitere USE-Anweisungen ; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartTestMenu() ; Diese Zeilen einfügen, damit Buchstaben als ; Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Mein Menü") ; Neues Menü hinzufügen CreateMenu ("Erstes Menü") ; zwei Einträge hinzufügen CreateMenuEntry ("Eintrag 1", "", "BEFEHL", "PARAMETER") CreateMenuEntry ("Eintrag 2", "", "BEFEHL", "PARAMETER") ; Menüeintrag als Hinweis auf ein Untermenü einfügen CreateMenuEntry ("Untermenüname", "", "submenu", "") ; Untermenüeintrag hinzufügen CreateSubMenuEntry ("Erstes Untermenü", "", "BEFEHL", "PARAMETER") ; weiter Menüs, Menüeinträge und Untermenüeinträge einfügen ; Menü anzeigen StartMenuLayer() EndScript
Als nächstes Müssen Sie Ihrem Menü Tasten zuordnen. Hierbei reicht es nicht aus, dem Skript eine einzige Taste zuzuordnen, denn das Skript benötigt zudem Tasten zum Beenden des Menüs, zum Auf- und Zuklappen von Menüs und so weiter.
Der einfachste Weg, Ihrem neuen Menü eine Taste zuzuordnen ist folgender:
Da Sie nun wissen, wie man eigene Menüs erstellt und mit Tasten aufruft, folgt in diesem Abschnitt nun die Auflistung der relevanten Skripts sowie die integrierten Befehle und deren Aufrufparameter. Für jedes Skript steht ein kleines Beispiel zur Verfügung:
Der Befehl NewXmlMen leitet ein neues Menü ein. Sie können mit dem optionalen Parameter sName angeben, ob das Menü einen Namen bekommt, der beim Aufrufen des Menüs von JAWS gesprochen wird.
Im folgenden Beispiel wird ein Menü mit dem Namen Editor-Menü erstellt:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartNotepadMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Editor-Menü") ; Neues Menü namens "Datei" hinzufügen CreateMenu ("Datei") ; Eintrag hinzufügen (Schreiben der Tastenfolge "Hallo Welt") CreateMenuEntry ("Schreibe Hallo Welt", "", "function", "TypeString|Hallo Welt") ; ... ggf. weitere Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl CreateMenu fügt der Menüleiste einen neuen Eintrag hinzu. Mit dem Parameter sMenuname vergeben Sie den Namen des Menüs in der Menüleiste.
Im folgenden Beispiel wird ein Menüleisten-Eintrag mit dem Namen Datei erstellt:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartNotepadMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Editor-Menü") ; Neues Menü namens "Datei" hinzufügen CreateMenu ("Datei") ; Eintrag hinzufügen (Schreiben der Tastenfolge "Hallo Welt") CreateMenuEntry ("Schreibe Hallo Welt", "", "function", "TypeString|Hallo Welt") ; ... ggf. weitere Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl CreateMenu fügt der Menüleiste einen neuen Eintrag hinzu. Mit dem Parameter sMenuname vergeben Sie den Namen des Menüs in der Menüleiste.
Im folgenden Beispiel wird ein Menüleisten-Eintrag mit dem Namen Datei erstellt:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartNotepadMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Editor-Menü") ; Neues Menü namens "Datei" hinzufügen CreateMenu ("Datei") ; Eintrag hinzufügen (Schreiben der Tastenfolge "Hallo Welt") CreateMenuEntry ("Schreibe Hallo Welt", "", "function", "TypeString|Hallo Welt") ; ... ggf. weitere Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl CreateMenuEntry fügt dem aktuellen Menüleisten-Element einen neuen Menüeintrag hinzu. Folgende Parameter sind hierbei vorhanden:
Im folgenden Beispiel wird in der Menüleiste dem Menübefehl Datei ein neuer Menüeintrag mit dem Namen Schreibe Hallo Welt hinzugefügt. Dem Parameter sShortcut wird eine leere Zeicvhenkette übergeben, da der Menübefehl weder in JAWS noch im Anwendungsprogramm durch eine Tastenkombination gestartet werden kann. Im Parameter sCommand wird die Zeichenkette function übergeben, da eine JAWS-Funktion ausgeführt werden soll. Im letzten Parameter sParam wird zuerst als Parameter der Name der Funktion übergeben, nämlich TypeString. Da diese JAWS-Funktion selbst einen Parameter erwartet, nämlich den zu schreibenden Text, wird nach dem Funktionsnamen TypeString durch einen senkrechten Strich getrennt der zu schreibende Text übergeben, nämlöich Hallo Welt
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartNotepadMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Editor-Menü") ; Neues Menü namens "Datei" hinzufügen CreateMenu ("Datei") ; Eintrag hinzufügen (Schreiben der Tastenfolge "Hallo Welt") CreateMenuEntry ("Schreibe Hallo Welt", "", "function", "TypeString|Hallo Welt") ; ... ggf. weitere Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl CreateSubMenuEntry hat die gleichen Parameter wie CreateMenuEntry. Um ein Untermenü zu erstellen, muss vor dem Befehl
CreateMenuEntry ("NAME DES EINTRAGES", "", "submenu", "")
Parameter von CreateSubMenuEntry:
Im folgenden Beispiel werden in der Menüleiste dem Menübefehl Tiere mehrere neue Untermenüeinträge hinzugefügt:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartNotepadMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Lebewesen") ; Neues Menü namens "Tiere" hinzufügen CreateMenu ("Tiere") ; 1. Untermenü mit Haustieren CreateMenuEntry ("Haustiere", "", "submenu", "") ; Untermenüeintrag zum Ausführen des Skripts "PlaySoundFile" mit Parameter "Dog.mp3" CreateSubMenuEntry("Hunde", "", "script", "playsoundfile|dog.mp3") ; Untermenüeintrag zum Ausführen des Skripts "PlaySoundFile" mit Parameter "cat.mp3" CreateSubMenuEntry("Katze", "", "script", "playsoundfile|cat.mp3") ; ggf. weitere Menüeinträge bzw. Untermenüeinträge ; Menü anzeigen StartMenuLayer() EndScript Script PlaySoundFile (string sFilename) ; Befehle zum Abspielen der Sounddatei hier einfügen EndScript
Sie können erstellte Menüs mit den Menüeinträgen auch als XML-Datei auf Ihrer Festplatte speichern. So müssen Sie das Menü nicht bei jedem Aufruf eines Skripts erstellen sondern können bereits gespeicherte Menüs später von der Festplatte laden. Achtung: Eine bereits vorhandene XML-Datei wird ohne Rückfrage überschrieben!
Parameter von SaveXML:
Im folgenden Beispiel wird ein Menü mit Symbolen zum Einfügen erstellt und dieses als XML-Datei unter c:\Symbole.xml gespeichert
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script CreateSymbolsMenu () ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; neues Menü erstellen NewXMLMenu ("Einfügen-Menü") ; Menü "Währung" hinzufügen CreateMenu ("Währung") ; Menü mit Menüeinträgen für Währung füllen CreateMenuEntry ("Euro", "", "function", "TypeString|€") CreateMenuEntry ("Euro Cent", "", "function", "TypeString|¢") CreateMenuEntry ("Pfund Sterling", "", "function", "TypeString|£") CreateMenuEntry ("Japanischer Yen", "", "function", "TypeString|¥") CreateMenuEntry ("Chinesischer Yuan", "", "function", "TypeString|¥") CreateMenuEntry ("Dollar", "", "function", "TypeString|$") CreateMenuEntry ("Cent", "", "function", "TypeString|¢") CreateMenuEntry ("Norwegische Krone", "", "function", "TypeString|Kr") CreateMenuEntry ("Schweizer Franken", "", "function", "TypeString|Fr") CreateMenuEntry ("Südkoreanischer Won", "", "function", "TypeString|₩") ; Menü "Mathematische Symbole" hinzufügen CreateMenu ("Mathematische Symbole") ; Menü mit Menüeinträgen für mathematische Symbole füllen CreateMenuEntry ("Neigung", "", "function", "TypeString|¬") ; weitere Menüs und Menüeinträge erstellen ; Datei auf Festplatte speichern SaveXML ("c:\\Symbole.xml") EndScript
Sie können die mit SaveXML erstellte XML-Datei mit LoadXML von der Festplatte laden und dann als Menü verwenden.
Parameter von LoadXML:
Im folgenden Beispiel wird die auf der Festplatte im Ordner c:\Symbole.xml gespeicherte XML-Datei mit Menüeinträgen geladen und verwendet:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script ShowSymbolsMenu () ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Datei von Festplatte laden LoadXML ("c:\\Symbole.xml") ; Menü anzeigen StartMenuLayer() EndScript
Nachdem Sie ein Menü mit Menüeinträgen mit SaveXML gespeichert oder mit LoadXML geladen haben, können Sie mit OpenXML die Datei zur Kontrolle in Ihrem Browser öffnen.
Parameter von OpenXML:
Im folgenden Beispiel wird ein Menü mit Symbolen zum Einfügen erstellt und dieses als XML-Datei unter c:\Symbole.xml gespeichert. Anschließend wird die Datei zur Kontrolle im Browser geöffnet:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script CreateSymbolsMenu () ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; neues Menü erstellen NewXMLMenu ("Einfügen-Menü") ; Menü "Währung" hinzufügen CreateMenu ("Währung") ; Menü mit Menüeinträge für Währung füllen CreateMenuEntry ("Euro", "", "function", "TypeString|€") CreateMenuEntry ("Euro Cent", "", "function", "TypeString|¢") CreateMenuEntry ("Pfund Sterling", "", "function", "TypeString|£") CreateMenuEntry ("Japanischer Yen", "", "function", "TypeString|¥") CreateMenuEntry ("Chinesischer Yuan", "", "function", "TypeString|¥") CreateMenuEntry ("Dollar", "", "function", "TypeString|$") CreateMenuEntry ("Cent", "", "function", "TypeString|¢") CreateMenuEntry ("Norwegische Krone", "", "function", "TypeString|Kr") CreateMenuEntry ("Schweizer Franken", "", "function", "TypeString|Fr") CreateMenuEntry ("Südkoreanischer Won", "", "function", "TypeString|₩") ; Menü "Mathematische Symbole" hinzufügen CreateMenu ("Mathematische Symbole") ; Menü mit Menüeinträgen für mathematische Symbole füllen CreateMenuEntry ("Neigung", "", "function", "TypeString|¬") ; weitere Menüs und Menüeinträge erstellen ; Datei auf Festplatte speichern SaveXML ("c:\\Symbole.xml") ; Warten bis die Datei gespeichert ist Pause () ; Datei im Browser anzeigen OpenXML ("c:\\Symbole.xml") EndScript
Mit CreateMenuEntry und CreateSubMenuEntry können Sie lesen, wie Sie Menü-Einträge bzw. Untermenü-Einträge erstellen. In diesem Abschnitt wird nun beschrieben, welche Befehle und Parameter Ihnen in diesen Skripts zur Verfügung stehen.
Der Befehl mail ermöglicht es Ihnen, dem Menüeintrag eine Mail-Adresse hinzuzufügen, sodass nach Ausführen des Menüeintrags Ihr Mail-Client gestartet wird und die angegebene Mailadresse im An-Feld eingegeben wird. Geben Sie als einzigen Parameter die Mail-Adresse des Empfängers an.
Das folgende Beispiel erstellt ein Menü mit diversen Mail-Adressen als Menüstruktur:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartMailMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Meine Mail-Adressen") ; Neues Menü namens "Promis" hinzufügen CreateMenu ("Promis") ; Einträge hinzufügen CreateMenuEntry ("Michael", "", "mail", "michael@jackson.de") CreateMenuEntry ("Arnold", "", "mail", "arnold@mister-universe.de") CreateMenuEntry ("Angie", "", "mail", "angela@kanzlerin.de") ; Neues Menü namens "Privat" hinzufügen CreateMenu ("Privat") ; Einträge hinzufügen CreateMenuEntry ("Zuhause", "", "mail", "daheim@zuhause.de") CreateMenuEntry ("Arbeit", "", "mail", "Folter@Kammer.de") CreateMenuEntry ("Urlaub", "", "mail", "Ab_in_die@Freiheit.de") ; ... ggf. weitere Menüs und Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl mouseclick macht einen Mausklick an der angegebenen Pixel-Position. Geben Sie als Parameter die Pixel-Position von links, dann einen senkrechten Strich (|) sowie dann die Pixel-Position von oben an.
Das folgende Beispiel macht einen Mausklick an der Position 10:20 (10 Pixel von links, 20 Pixel von oben):
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartMausklickMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Maustest") ; Neues Menü namens "Positionen" hinzufügen CreateMenu ("Positionen") ; Einträge hinzufügen CreateMenuEntry ("Klicke auf die Schaltfläche", "", "mouseclick", "10|20") ; ... ggf. weitere Menüs und Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl explorer öffnet das im Parameter angegebene Verzeichnis direkt im Windows-Explorer. Bedenken Sie, dass Sie den Backslash doppelt angeben müssen.
Das folgende Beispiel öffnet mehrere angegebene Ordner im Explorer:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartExplorerMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Meine Ordner") ; Neues Menü namens "Dokumente" hinzufügen CreateMenu ("Dokumente") ; Einträge hinzufügen CreateMenuEntry ("Briefe", "", "explorer", "c:\\Meine Dokumente\\Briefe\\") CreateMenuEntry ("Romane", "", "explorer", "c:\\Meine Dokumente\\Romane\\") ; Neues Menü namens "Bilder" hinzufügen CreateMenu ("Bilder") ; Einträge hinzufügen CreateMenuEntry ("Wallpapers", "", "explorer", "c:\\Bilder\\Wallpaper\\") CreateMenuEntry ("Fotos", "", "explorer", "c:\\Bilder\\Fotos\\") ; ... ggf. weitere Menüs und Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl internet öffnet die in Parameter angegebene Web-Adresse direkt in Ihrem Browser.
Das folgende Beispiel öffnet mehrere angegebene URLs im Browser:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartWebMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Internetadressen") ; Neues Menü namens "Suchmaschinen" hinzufügen CreateMenu ("Suchmaschinen") ; Einträge hinzufügen CreateMenuEntry ("Google", "", "internet", "https://www.google.de") CreateMenuEntry ("Startpage", "", "internet", "https://www.startpage.de") ; Neues Menü namens "Freedom Scientific" hinzufügen CreateMenu ("Freedom Scientific") ; Einträge hinzufügen CreateMenuEntry ("FS Deutschland", "", "internet", "https://www.freedomsci.de") CreateMenuEntry ("FS Amerika", "", "internet", "https://www.freedomscientific.com") ; ... ggf. weitere Menüs und Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl function führt eine JAWS-Funktion aus. Geben Sie in Parameter den Namen der Funktion an. Sollte die Funktion in JAWS beim Aufruf Parameter erwarten, so erstellen Sie nach dem Namen der Funktionen einen senkrechten Strich (|) und fügen danach den Parameter ein. Sollten mehrere Parameter benötigt werden, so fügen Sie einfach diese mit weiteren senkrechten Strichen ein. Beispiel: ... "function", "NameDerFunktion|Parameter1|Parameter2|usw."
Das folgende Beispiel ist ein Auszug aus dem beigefügten Skript "StartInsertMenu" zum Einfügen von Symbolen in Text:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartInsertMenu () if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf NewXMLMenu ("Einfügen-Menü") ; ... vorherige Menüs ; Menü Redezeichen erzeugen CreateMenu ("Redezeichen") ; Menüeinträge hinzufügen CreateMenuEntry ("Doppelt gewinkelte Klammer auf", "", "function", "TypeString|«") CreateMenuEntry ("Doppelt gewinkelte Klammer zu", "", "function", "TypeString|»") CreateMenuEntry ("Primezeichen, Anführungszeichen (Minuten-Zeichen)", "", "function", "TypeString|′") CreateMenuEntry ("Doppel-Prime-Zeichen, Anführungszeichen (Sekunden-Zeichen)", "", "function", "TypeString|″") ; ... weitere Menüs ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl script führt ein JAWS-Skript aus. Geben Sie in Parameter den Namen des Skripts an. Sollte das Skript in JAWS beim Aufruf Parameter erwarten, so erstellen Sie nach dem Namen des Skripts einen senkrechten Strich (|) und fügen danach den Parameter ein. Sollten mehrere Parameter benötigt werden, so fügen Sie einfach diese mit weiteren senkrechten Strichen ein. Beispiel: ... "script", "NameDesSkripts|Parameter1|Parameter2|usw."
Das folgende Beispiel ist ein Auszug aus dem mitgelieferten Skript StartJAWSMenu. Hierbei werden mehrere Menüeinträge erstellt, bei deren Aufruf vorhandene JAWS-Skripts ausgeführt werden:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartJAWSMenu () ; Variablen-Deklarationen ; if giMenus then ... NewXMLMenu ("JAWS Menü") ; ... vorherige Menüs ; Menü Einstellungen generieren CreateMenu ("Einstellungen") ; Einträge hinzufügen, die weitere JAWS-Skripts aufrufen CreateMenuEntry ("Anwendungseinstellungen", "Einfügen+V", "script", "AdjustBrailleOptions") CreateMenuEntry ("Einstellungsverwaltung", "Einfügen+6", "script", "SettingsCenter") CreateMenuEntry ("HTML-Einstellungen", "", "script", "AdjustHTMLSettings") ; ... weitere Menüs ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl notepad öffnet die im Parameter angegebene Datei direkt im Windows-Editor. Bedenken Sie, dass Sie den Backslash doppelt angeben müssen. So können Sie eine Text-Datei direkt im Editor öffnen, auch wenn die Dateiendung nicht mit dem Editor verknüpft ist. Zahlreiche JAWS-Dateien, wie zum Beispiel Header-Dateien (*.jsh) sowie Quellcode-Dateien (*.jss) können so zum Stöbern direkt im Windows-Editor geöffnet werden.
Das folgende Beispiel erstellt das Menü Header-Dateien mit dem Menüpunkt UIA.jsh". Wird der Menüpunkt ausgeführt, so wird die Datei UIA.jsh vom JAWS-Skriptverzeichnis zur Anzeige im Windows-Editor geöffnet:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartExplorerMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Datei-Anzeige") ; JAWS-Skriptverzeichnis in die Variable sJAWSDiretory speichern var string sJAWSDirectory = GetSharedScriptsDirectory (False) ; Menü "Header-Dateien" anlegen CreateMenu ("Header-Dateien") ; Menüeintrag "UIA.jsh" hinzufügen, zum Öffnen der UIA.jsh im Editor CreateMenuEntry ("UIA.jsh", "", "notepad", sJAWSDirectory + "\\UIA.jsh") ; ... ggf. weitere Menüs und Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl run führt das im Parameter angegebene Programm aus bzw. öffnet die im Parameter angegebene Datei. Bedenken Sie, dass der Backslash als Sonderzeichen in JAWS behandelt wird und Sie deshalb bei Pfadangaben den Backslash doppelt schreiben müssen, also \\
Das folgende Beispiel öffnet Microsoft Word und ein weiteres Programm. Hinweis: Für manche Programme ist es nicht nötig, den vollständigen Dateipfad anzugeben. Hierzu zählen u. a. die Microsoft-Programme:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei Script StartProgramsMenu() ; Diese Zeilen einfügen, damit Buchstaben als Kurztasten funktionieren if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neue Menüleiste erstellen NewXMLMenu ("Meine Programme") ; Neues Menü namens "Dokumente" hinzufügen CreateMenu ("Microsoft") ; Word öffnen CreateMenuEntry ("Word", "", "run", "winword.exe") CreateMenu ("Andere Apps") ; Programm mit Pfad öffnen CreateMenuEntry ("Mein Programm", "", "run", "c:\\Pfad\\Datei.exe") ; ... ggf. weitere Menüs und Menübefehle hier einfügen ; Menü anzeigen StartMenuLayer() EndScript
Der Befehl wordmacro startet das im Parameter angegebene Word-Makro. Sie können hier sowohl eigene Makros aufrufen als auch bereits von Microsoft zur Verfügung gestellte Makros verwenden.
Das folgende Beispiel ist ein Auszug aus dem mitgelieferten Skript WordMenu. Es ruft die von Microsoft erstellten Makros FormatFont (Dialog Zeichen) sowie FormatParagraph (Dialog Absatz) auf:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei void Function WordMenu() ; vorhergehende Menüs und Menübefehle ; Menü "Format" erzeugen CreateMenu ("Format") ; Menüeinträge hinzufügen CreateMenuEntry ("Zeichen...", "Strg+D", "wordmacro", "FormatFont") CreateMenuEntry ("Absatz...", "", "wordmacro", "FormatParagraph") ; weitere Menüs und Menübefehle EndFunction
Der Befehl worddialog startet den im Parameter angegebene Word-Dialog. Hierbei handelt es sich um eine Zahl, die von Microsoft genutzt wird, um einen bestimmten Dialog zu öffnen. Die Nummer 680 zum Beispiel dient zum Öffnen des Seriendruck-Dialogs. Eine Liste der möglichen Zahlenwerte finden Sie im Internet.
Das folgende Beispiel ist ein Auszug aus dem mitgelieferten Skript WordMenu. Es ruft den Dialog Autokorrektur auf, der die Dialog-Nummer 915 besitzt:
; ewMenus einbinden use "ewMenus.jsb" ; globale Variablen globals object goXML, int giMenus ; Skriptdatei void Function WordMenu() ; vorhergehende Menüs und Menübefehle ; Menü "Format" erzeugen CreateMenu ("Format") ; Menüeinträge hinzufügen CreateMenuEntry ("AutoKorrektur...", "", "worddialog", "915") ; weitere Menüs und Menübefehle EndFunction
Sie können Menüs zum Beispiel nur dann erstellen lassen, wenn eine bestimmte Bedingung erfüllt ist.
Im folgenden Beispiel aus dem Skript StartJAWSMenu wird das Menü HTML nur dann erstellt, wenn ein Browser geöffnet ist:
... var string sScript = GetScriptFileName (True) ; HTML-Menü nur anzeigen, wenn ein Browser aktiv ist sScript = StringLower (sScript) If (sScript == "internet explorer.jsb") || (sScript == "microsoftedge.jsb") || (sScript == "chrome.jsb") || (sScript == "firefox.jsb") then CreateMenu ("Html") CreateMenuEntry ("ARIA-Dialog", "", "function", "DlgAriaLiveRegionFilterText") CreateMenuEntry ("Linkliste", "", "function", "dlgListOfLinks") CreateMenuEntry ("Lesezeichen", "", "function", "DlgListOfPlaceMarkers") EndIf ; If (sScript == "internet ...
Um mehrere Menüeinträge mit einem Rutsch zu einem Menü hinzuzufügen, kann man zum Beispiel Schleifen verwenden.
Im folgenden Beispiel aus dem Skript StartJAWSMenu wird das Menü Sprachverlauf mit Einträgen gefüllt. Hierbei wird mit einer For-Schleife über die Anzahl der Sprachverlauf-Einträge jeder Einzeleintrag als Menüeintrag hinzugefügt:
var string sSpeechHistory = GetSpeechHistory (), int iSpeechHistoryCount = StringSegmentCount (sSpeechHistory, "\13\10"), int i, string sTemp ... CreateMenu ("Sprachverlauf") for i = 1 to iSpeechHistoryCount sTemp = StringSegment (sSpeechHistory, "\13\10", i) If !(sTemp == "") then CreateMenuEntry (sTemp, "", "function", "CopyToClipboard|"+sTemp) EndIf EndFor ...
Sie können über den Windows Scripting Host eine Dateisuche programmieren, um Dateien als Menü darzustellen und diese zu starten.
Im folgenden Beispiel werden die Favoriten des Internet Explorers ausgelesen und in einem Menü dargestellt. Dabei dienen die Ordner-Namen als Menüs und die gefundenen Dateien als Menüeinträge. Beim Ausführen wird der die Web-Adresse im Standard-Browser geöffnet:
Script StartFavoritesMenu () var ; Windows-Scripting-Host-Objekt erstellen object oShell = CreateObject("Wscript.Shell"), ; Pfad zum Favoriten-Ordner in sPath speichern string sPath = oShell.SpecialFolders("Favorites"), ; File-System-Objekt erstellen object oFSO = CreateObject("Scripting.FileSystemObject"), object oFolder, ; Favoriten-Pfad zuweisen object oFolders = oFSO.GetFolder (sPath), object oFile, object oFiles, string sFile, string sFolder if giMenus then PerformScript FindChar(GetCurrentScriptKeyName ()) Return EndIf ; Neues Menü erstellen NewXMLMenu ("Lesezeichen") Schleife über alle (Unter-)Ordner des Favoriten-Ordners ForEach oFolder in oFolders.SubFolders ; aktueller Ordner-Namen als Menü-Namen verwenden CreateMenu (oFolder.Name) ; den aktuellen Ordner-Pfad in sFolder speichern sFolder = oFolder.Path ; Schleife über alle Dateien des aktuellen (Favoriten-)Ordners ForEach oFile in oFolder.Files ; aktuelle Dateinamen in sFile speichern sFile = oFile.Name ; Menüeintrag mit dem Dateinamen als Menünamen und ; dem Pfaad zum Ausführen des Favoriten erstellen CreateMenuEntry (sFile, "", "run", sfolder + "\\" +sFile) EndForEach EndForEach ; Menü starten StartMenuLayer() EndScript
Falls Sie Fehler entdecken, Fragen haben, Anregungen und Verbesserungsvorschläge loswerden wollen oder Kritik äußern möchten, können Sie dies gerne an folgende E-Mail-Adresse tun:
udo.egner-walter@web.deBitte bedenken Sie jedoch, dass diese Skriptsammlung von mir als Privatperson erstellt wurde und ich ggf. nur in begrenztem Umfang auf Ihre E-Mails antworten kann.